const vscode = require('vscode');
const { McpService } = require('./services/mcp/McpService');
const { McpCommandManager } = require('./services/mcp/McpCommandManager');

/**
 * 初始化MCP功能
 * @param {vscode.ExtensionContext} context 扩展上下文
 * @param {object} options 选项
 * @param {any} [options.chatViewProvider] 聊天视图提供者，用于设置MCP服务
 * @returns {Promise<McpService>} MCP服务实例
 */
async function initializeMcp(context, options = {}) {
    try {
        console.log('初始化MCP服务...');
        const mcpService = new McpService(context);
        await mcpService.initialize();
        
        // 注册MCP命令管理器
        const mcpCommandManager = new McpCommandManager(context, mcpService);
        mcpCommandManager.register();
        
        // 注册MCP配置WebView面板已在extension.js中完成，这里不再重复注册
        
        // 将MCP服务添加到清理列表
        context.subscriptions.push({
            dispose: () => {
                // 注意: MCP服务目前不需要特别的清理逻辑，依赖于VSCode自动清理
                console.log('清理MCP资源...');
            }
        });
        
        // 向chatViewProvider提供MCP服务
        if (options.chatViewProvider) {
            if (typeof options.chatViewProvider.setMcpService === 'function') {
                options.chatViewProvider.setMcpService(mcpService);
            } else {
                console.warn('chatViewProvider不支持setMcpService方法');
            }
        }
        
        return mcpService;
    } catch (error) {
        console.error('初始化MCP服务失败:', error);
        vscode.window.showErrorMessage(`初始化MCP服务失败: ${error.message}`);
        throw error;
    }
}

module.exports = { initializeMcp }; 